<?php
namespace Admin\Model;
use Think\Model;

class GoodsModel extends Model{
	
	protected $_validate = array(
			array('title', 'require', '商品标题不能为空', self::EXISTS_VALIDATE, 'regex', self::MODEL_BOTH),
			array('stock', 'require', '库存不能为空', self::MUST_VALIDATE , 'regex', self::MODEL_BOTH),
			array('price', 'require', '价格不能为空', self::MUST_VALIDATE , 'regex', self::MODEL_BOTH),
	);
	
	protected $_auto = array(
			array('create_time', NOW_TIME, self::MODEL_INSERT),
			array('update_time', NOW_TIME, self::MODEL_BOTH),
	);
	
	
	/**
	 * 更新分类信息
	 * @return boolean 更新状态
	 */
	public function update($data = null){

		/* 获取数据对象 */
		$data = $this->token(false)->create($data);
		if(empty($data)){
			return false;
		}
		
	 	/* 添加或新增基础内容 */
        if(empty($data['id'])){ //新增数据
            $id = $this->add(); //添加基础内容
            if(!$id){
                $this->error = '新增基础内容出错！';
                return false;
            }
        } else { //更新数据
            $status = $this->save(); //更新基础内容
            if(false === $status){
                $this->error = '更新基础内容出错！';
                return false;
            }
        }

		return $data;
	}
	
	/**
	 * 获取一条信息
	 */
	public function info($id, $field = TRUE) {
		
		$map['id'] = $id;
		return $this->where($map)->field($field)->find();
	}
	
	
	/**
	 *  更新字段的数量
	 *  @param int $id 商品ID
	 *  @param array/string $fields , 可以传入字符串或数组
	 *  @param int $num  需要更新的值
	 *  @param int $op   操作的方式， $op=1加， $op=-1,减
	 *  @return
	 */
	public function upNumber($id, $fields, $num = 1, $op = 1) {
	
		if (!is_numeric($id)) return false;
	
		$map['id'] = $id;
	
		if (is_array($fields)) {
			//处理来自数组
			if ($op == 1) {
				foreach ($fields as $val) {
					$result = $this->where($map)->setInc($val, $num);
				}
			} else {
				foreach ($fields as $val) {
					$result = $this->where($map)->setDec($val, $num);
				}
			}
		} else {
			//单个字段更新
			if ($op == 1) {
				$result = $this->where($map)->setInc($fields, $num);
			} else {
				$result = $this->where($map)->setDec($fields, $num);
			}
		}
		return $result;
	}
	
}